package com.heima.tanhua.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

// @Target
// 参数：接收ElementType类型的值
// 这个注解，用来声明当前自定义注解，是作用于什么范围的
// METHOD -> 作用于方法上
// CONSTRUCTOR -> 作用于构造方法上
// PARAMETER -> 作用于参数上
// PACKAGE -> 作用于类上
@Target(ElementType.METHOD)

// @Retention 代表注解，生命周期
// SOURCE -> 编译阶段
// CLASS  -> 编译后字节码阶段
// RUNTIME -> 运行时阶段
// 一般来说，直接用RUNTIME就可以
@Retention(RetentionPolicy.RUNTIME)
public @interface Log {

    // 自定义注解内部，可以定义参数，要嘛就没参数，有参数的话，一定要有一个value参数
    // 注意：虽然value是参数，但是声明的时候，是方法的形式
    // 当前在用这个注解的时候，可能会涉及到一些传参，就可以用这个，详情可以参考 GetMapping
    String value();

}
